プログラミングと Taoism
1998秋のプログラミングシンポジウム
プログラミングと Taoism
竹内郁雄 † 天海良治 †† 山崎憲一 †† 吉田雅治 ††
1 はじめに
成立ち に 2000 年以上の時代差がある老子の Taoism(*1) とプログラミング(*2) に直接の関係があるというのは, 強引にすぎるというものだが, それにしても, 多くのコンピュータ科学者や技術者 (実は我々も含まれる のだが) が老子の Taoism の引きつけられて, それをなんらかの形で明言しているのは単なる偶然の一致ではあるまい. 西欧文化の根源であるギリシャ哲学 を除いて, このような古来の (非西欧的) 哲学がコン ピュータの分野で, 比較的多く論じられたり, 引用されたりすることはまれであろう. 本稿では, 我々自身と Taoism の (主に偶然による) 関わりと, 我々に目についた Taoism とコンピュータ科学との関わりの事例についていくつか紹介するとともに, こういった一見不思議なリンクが一体なに に根ざしているか, 若干の考察を加えたい.
これからプログラミングは産業的にも技術的にもある意味で不透明な時代を迎えることが予想される. そういった時代環境で, なにかとんでもない連想リンクをたぐってみることは, あながち無益ではない だろうし, 新しいヒントを与えるきっかけにもなるかもしれないというのが, 我々の期待である.
† 電気通信大学情報工学科
†† 日本電信電話株式会社 NTT 電気通信研究所
footnote
*1 Taoism に道教という日本語を単純に充てるのは少々問題がある. 老子が『道徳経』で述べた (これ自身も歴史考証的にはいろいろ問題があるらしい) Taoism は, 宗教的な教義とは別種 のものである.
*2 これの元祖は 1980 年代前半に Charles Babbage のよき理解者であった Byron 卿の娘, Ada Augusta とされている.
2 我々の研究と Taoism
手始めに, 我々が Taoism とどこで出会い, それ以来我々の研究にどう関わってきたかについて記述する. 筆者の一人, 竹内が同僚の奥乃博と Lisp 系の言語 の研究・開発に関わり始めたのは 1973 年ごろである. 以来, 1970 年代は大里延康も含めて, 16 ビットミニコンの上で, 3 種類の Lisp をつくった. 1970 年代は, このような小さなコンピュータ上でとにかく Lisp を 動かし, 第 2 次といわれた人工知能研究のブームの中で, 実験に使えるプラットフォームを用意する. これが小規模の研究室レベルでできるおそらく最善の方策であった.
LIPQ (1974 ごろ) PDP-11/20 (竹内 & 奥乃) — 8Kcell
LIPX (1976 ごろ) PDP-11/55 (竹内 & 奥乃) — 10Kcell
TAO (1980 ごろ) microprogrammable PDP-11/60 (竹内 & 大里) — 32Kcell
どれも今日のパソコンに比べて圧倒的に少ないメモリ容量しかなかった. 我々が独自に Lisp の開発を始めるきっかけとなったのは, 1970 年ごろに MIT の Terry Winograd が博士論文として発表した積木世界での自然言語対話システム SHRDLU の成功である. 使われたハードウェアは PDP-10, 言語はその上 の MacLisp である. 論文を調べた結果, MacLisp の 128K セルのうち 80~90 パーセントはほとんど中身や構造の変化しない静的なデータであり, 作業領域 として使われる, 動的な変化の激しい領域は予想外に少なかった.
初期の LIPQ や LIPX は, PDP-10 など (金額的に も, 当時の計算機業界の状況を反映した通産省の政策の上でも) 絶対に買えない我々が, 予想外に小さな作業領域 (仮説) に飛びついた結果の産物である.(*3) LIPQ (リップク) や LIPX (リッペケ) というちょっと 怪しい名前の Lisp は, ハードウェア規模の割には国内で非常によい成績をおさめ, 小さな日本語会話システムのデモに使われた.
そして, 同じ PDP-11 シリーズの, もう最後に近い 製品であった PDP-11/60 で, さらに新しい Lisp を開発する機会を, 竹内は新入社員の大里とともに得ることができた. 16 ビットマシンであるが, 小さな MMU(Memory Management Unit) を備え, かつ MMU のおかげでアドレス空間も 18 ビット幅まで拡張され ていた. PDP-11/60 は小さいながらも 16 ビット幅 で 1K 語程度の (垂直型) マイクロプログラムを書くことが可能であった. 基盤上の MMU 関係の MSI にちょっとしたゲートを加えることによって, それまで 16 ビットミニコンでは不可能だった 32K セル空間を実装することができた. 一世代前に比べて 2 倍以上の増加である. (4)
footnote
*3 我々の使った PDP-11 というミニコンはちょうど 1970 年ご ろに登場した 16 ビットミニコンで, 16 ビットミニコンの中では最良のアーキテクチャをもっているといって過言ではなかったが, 1970 年代初期, それを当時の電々公社というお役所で買うことは, それこそイバラの道であった.
*4 これでも, 上の表にもあるように, これでも結局 32K セルしかない. 1970 年代半ばには MIT で, 1M セルに近い規模の Lisp 専用マシンがすでに開発されていた. 実は, これとて 1978 に出た VAX-11/780 を開発機械に使うことができれば, セル数はもっと増やせるはずだったが, やはりお金が足りなかった!
さて, この第 3 作目は, リップク, リッペケとは異 なる系統の名前にしたかった. PDP-11 の RT-11 と いう軽量 OS のファイル名のファイル種別表示用の 拡張子 (.src, .obj, .bin など) が 3 文字に限定されていたので, 命名に課せられた条件は, ほかのファイル 種と弁別しやすいように 3 文字であることが望ましいというものである. そこで竹内が小学館のランダムハウス大英和辞典 (第 1 版) をあてどもなく探すことにした. しかし, なんと, 一発で Tao という単語に遭遇したのであった. これが我々と Tao との出会いであった. ランダムハウス第 1 版によれば, Tao の語義は次 のとおりである. (*5)
(1) 万物が生起または存在, 変化する宇宙の原理.
(2) 道理, 法則. 人間行動の合理的基盤.
(3) 道: 老子, 荘子に始まる中国道教の中心概念: この道を守れば不老長寿が得られるという
このうち, (3) は老子の時代よりあとに, 一種の新 興宗教として生まれてきた「道教」の教えであり, 老子の思想と直接の関係はない. (1)と(2)はおよそ, プログラミング言語を設計して世に問おうとしている人間にとってはこの上ないバックアップとなる語義である. しかもピタリ 3 文字である. 要するに, これから取り組もうとする新設計の言語にこれほど相応しい名称はあろうはずがない. こうして第 3 作目 の Lisp の名称は驚くほど簡単に決定した.
我々は, 自分たちの仕事に, まずよい名前がつけることがとても重要だと考えている. 名前負けしない研究のインセンティブも湧く. 実は, プログラミング と Taoism の関係をここで論じようというくらいで あるから, 以降 TAO という名称は今日開発中の第 3 代 TAO に至るまで, 3 世代にわたって採用された. その都度異なる言語であるにもかかわらずである. そ ういったことから, 初代 TAO は PDP-11/60 の上に実装されたこともあって, 現在は TAO/60 と呼ぶことにしている. もちろん, 動くコンピュータはすでに 存在しない. ちなみに TAO/60 は当時研究が盛んであった構造化プログラミングの技術要素を多く採り入れた Lisp である.
このような話を学会の研究会などで話しているう ちに, 当時東京大学教授 (現在富士通研究所) の和田 英一先生から手紙をいただいた. いわく, Algol 68 の 公式仕様書の中に Tao が引用されている. 調べてみると, 老子の唯一の著作とされている『道徳経』(*6) の 第 42 章の冒頭部分の翻訳であった. Tao produces one.
One produces two,
Two produces three, and
Three produces ten thousand things. ...
日本語にすると,
道は一を生ず. 一は二を生じ, 二は三を生じ, 三は万物を生ず. ...
である. 困難な応用研究のベースにある基礎言語という理念を表すのにこれほど嬉しい言い方は滅多にない. ランダムハウスの一発での出会いと奇妙に符牒したこの発見は我々に励ましを与えてくれた. そ れにしても, 万物が生真面目に ten thousand things と訳されているのは興味深い. こういったところも,「研究はどこかで楽しんでやらなければならない」と いう我々の信念にピッタリであった.
footnote
*5 第 2 版では, Taoism という単語の記述が随分簡単になった.
*6 これ自身を『老子』と呼ぶことも多い.
Algol 68 という前代未聞・空前絶後的に巨大な機能の厳格な言語の仕様書なのに, このような, 遊びが仕組まれていたことは, 大きな発見であり, 刺激的であった. 少なくとも日本的なセンスでは考えられない.
この仕様書の英露対訳にクマのプーサンの漫画が 挿入されていることも発見された. クマのプーサン というのは, その生き方自身が, まさに老子の言う自然体であり, Taoism そのものである. 実際, Benjamin Hoff の “The Tao of Pooh” (A Penguin book, 1982) は, 今日でも欧米では Taoism への最良の入門書の一つとされている. なぜ Algol 68 にこのような Taoism がちらついて いるか. これは最後でちょっと触れる.
竹内と大里は, それまで知らなかった Tao が予想 外に奥深いことに気づき, 書店で若干の本を漁った. そこで見つけたのが, バグワン・シュリ・ラジネーシ というインドの聖者の言説をまとめた『TAO』とい う本である (大陸書房, 手元になく出版年は不明だが 1970 年代半ば). 一言でいうと, インドに集まった世 界中のヒッピーに対する彼の説教集である. 彼の発 する “Are you enough?” という言葉が Taoism のいう 無為自然の一つの表現形であった.
しかし, 我々は彼の教義というか, 語りかけではな く, その名前バグ (虫), ワン (1), シュリ (修理, 処 理?), といった妙にコンピュータ屋に引っかかる駄洒 落の面白さに引かれてしまった. この本のタイトル にあった TAO のロゴはいたるところで活用させても らったものである.
ユーモアを伴った研究というのが我々のモットー であったから, Algol 68 仕様書に引用されていた第 42 章は, 早速次のようにパロディさせてもらった. パロディではあるが, Lisp の S 式の本質をうまく表現 していることに満悦であった.
Tao produces nil.
Nil produces atom,
atom produces S-expression, and
S-expression produces ten thousand things. ...
しかし, ミニコンの限界はすでに明らかだった. 米 国では 1970 年代半ばにすでにメガセル級の Lisp マ シンが開発されていたのである. 1970 年代末期, 日 比野靖が新人の渡邊和文とともに Lisp マシン ELIS の開発を計画した. それにソフトウェア担当として 参加することになったのが, 竹内, 奥乃, 大里の 3 名 である.
この ELIS の上に載せる言語の名称も TAO とする ことにした. あまりにもいい名前だったので一代で 捨てるには惜しすぎた. 幸い, 『道徳経』の第 1 章の 最初の文が, 道可道 非常道, すなわち, 道と言うべき は常の道にあらず, であった. これは道 (Tao) と名付 けられたものがあったら, それは常, つまり絶対ある いは永遠の道 (Tao) ではないということである (翻 訳はいろいろあるが例えば, “What is said to be the Tao is not the true Tao.” が代表的である). それほど
Tao は名状しがたいものであるという意味なのであ るが, これは同じ TAO という名前を, 次々と開発し ていく言語につけていくのに恰好の「理論的 (?) 基 盤」を与えている. つまり, TAO という言語は変転 するものであるというお墨付が得られたわけである.
結果的に ELIS は米国の Lisp マシンと競うほどの ものとして完成した. Lisp, Prolog, Smalltalk といっ た 1980 年代当初に話題が沸騰した, いわば人工知 能御三家言語を融合したマルチパラダイム言語 TAO も, 人々の注目を集めるところとなった. TAO/ELIS は 1986 年, 沖電気工業の協力を得て, NTT の子会社 NTT-IT から市販されるに至った.
TAO/ELIS システムの当初の開発者, 日比野, 奥乃, 渡邊, 竹内, 大里の頭文字を並べると, How to となる. これを使って, How to Lisp? などといって人々をケ ムにまいたものである. また, ちょっと見には融け込 みそうにないものを融合させようとしたということ で, 和製のキメラである鵺 (頭は猿, 胴は狸, 手足は 虎, 尻尾は蛇) をシンボルマークにして, NUE (New Unified Environment) というプロジェクト名を名乗っ たのもユーモアの精神であった. TAO/ELIS は予想通りというか, ビジネスとして は成功しなかった. しかし, 我々は, ELIS の上に市販 品とは異なる形のソフトウェア体系を組み上げ, 手 に馴染んだ日常のツールとして, システム寿命がとっ くに切れたつい最近まで研究の現場で使ってきた.
現在は, 1991 年ごろに開始, いまだに開発進行中 の TAO/SILENT というシステムを本稿の著者たち が手掛けている. ハードウェアは ELIS を拡大して改 良した SILENT で, 言語は徹底的に再設計した TAO である. マルチパラダイムは踏襲するが, むしろ, 実 時間記号処理を最も強く意識している. ロボット, マ ルチメディア, ネットワークなど, これから知的処理 がさらに必要になる実時間応用分野を標的にしてい るからである.
こうして, 3 代にわたって TAO という言語を開発 しているが, 最初の TAO と 2 作目の TAO は現在の TAO と区別するために, それぞれ TAO/60, TAO/86 (または DAO) と呼ぶことにしている.
3 Taoism
Taoism, というより, 本来の Tao に関しては多くの 解説書が存在する. ここではプログラミングとの関 わりを考察するのに必要最小限の紹介を行なう. 以 下の紹介は小川環樹責任編集の『老子 荘子』(中公バックス 世界の名著 4, 中央公論社, 1978) などを参 考にした.
Tao (道) の概念の創始者は, 中国思想史において 謎の人物とされる老子こと老タン (タンは JIS にな い字) である. 老子が実際にどのような人物であった かについては三つの説があり, その生きていた年代 に 200 年ほどの差がある. まさに伝説の人物である. 彼は荘子と並んで道家の宇宙的人間論を創始した.
老子の唯一の著作が, 約 5,000 文字からなる『道徳経』である (これ自身が『老子』の別名と説明され ることがある). 上下編に分かれており, 上編の最初 の文字が道, 下編の 2 番目の文字が徳ということで, 道徳経と呼ばれたという. ただし, 道と徳は別々の概 念であって, 今日の道徳 (moral) という言葉から連 想されるものとは異なる. Raymond Smullyan によれ ば, むしろ, 通常の (教条的な, あるいは人倫を説く)「道徳主義」とは正反対の思想が述べられている. 『老子』の文章は, とつとつとして短く, 詩のよう な韻が多用され, 警句に満ち, 逆説的で, 晦渋である. 相当に練り上げらた文章らしい. それゆえに, 言葉の意味が取りにくいところが多く, 解釈が分かれやすい. 固有名詞が 1 回も現れないというのも象徴的である. そもそも, これが単独の著者に手になるものかどうかの論争すらある. 現在のところ, 単独の著者に発し, 後生の改訂などが少し加わっているのではないかというのが通説である. 『老子』の最も基本的な概念は「道」である. 道は以下のように, 万物の母, すべてのものをあらしめ る原理であるが, 名状しがたいので, 仮につけた名前 である. 物有り混成し, 天地に先だって生ず. 寂兮 (せっ けい) たり, 寥兮 (りょうけい) たり, 独り立って 改 (か) わらず, 周行して而も殆 (つか) れず, 以 て天下の母為る可し. 吾其の名を知らず. 之に 字して道と曰う. (25 章)
論理学者 Smullyan による “The Tao is Silent” (Harper & Row, Publishers, 1977. 邦訳 『タオは笑っている』 桜内篤子, 工作舎, 1981, 1996 に改訂新版) には, 次 のように紹介されている. すぐあとで述べる「無為」 もここで言及されている. この詩が道をもっとも簡明直截に記述しているかもしれない.
There is something blurred and indistinct Antedating Heaven and Earth.
How indistinct! How blurred!
Yet within it are forms.
How dim! How confused!
Quiet, though ever functioning.
It does nothing, yet through it all things are done. To its accomplishment it lays no credit.
It loves and nourishes all things, but does not lord it over them.
I do not know its name,
I call it the Tao.
--- Smullyan, composite verse including Chapter 25
道はおぼろげでとらえがたいもので, 無定形では あるが, まったくの抽象概念ではなく, やはり物とさ れる. これは神秘主義である. しかし, 原理である以 上, 道自身は永久不変である (しかし, 万物は流転す る). このようなことを知ることが英知であり, 人は それによって心の安定を得ることができる. これと 似た神秘主義はほかにあったが『老子』は, 柔弱と静 を強調し, 嬰児, 赤子, 水といったものを道の象徴と して多用する.
道は天や地に (論理的に) 先んずるものであり, そ れ自身は自らそうであったという意味で自然 (what- is-so-of-itself) である. それは, 為さざるをして (す べてを) 為す. これを無為という. これを人の行動指 針とすると, 『老子』は政治論になる. すなわち, 君 主が臣民に干渉せずして国がまとまることが理想に なる.
道は他者に動かされない自然であるから絶対者で あり, すべてに超越するが, すべてのものに内在する という意味で万物の母である. だから, その無為は万 物に浸透している. しかし, 無為自然をもって, 人は 運命を甘受すべきということではない. むしろ, 静か な無為をもって他人の「自然」を侵すなと説いてい るようである. すなわち, 社会における他者との調和 である. ここでいわゆる人倫の道徳を教条主義的に 説くということを一切していないことが重要である.
以下の二つの詩も Smullyan の前掲書から取ったも のであるが, 道の発想をうまく表現している. 西洋的 ロゴスの記号論理学の専門家が, このようなものを 書くこと自体に Tao の深みがあるのかもしれない.
The sage falls asleep not because he ought to
Nor even because he wants to
But because he is sleepy.
これは「自然」を表現しているが, 次は「無為」に重点がある.
The Tao has no purpose,
And for this reason fulfills
All its purposes admirably.
徳は道の下位概念である. それについては省略す る. なお, 禅は老荘思想に仏教が合体したものであ る. そこで悟り (enlightenment) といった概念が生ま れた. 本来の『老子』には, 悟りという概念はないよ うであるが, Tao を語るとき, 悟りはつい出てきてし まう.
4 プログラミングとどう関係するか?
いよいよ本題に入る. ただし, もともと本稿は, 研究の合間にエピソード的に蓄積してきたもののみをベースにしているので, もっと本格的なサーベイが必要だとは思いつつ, その域には遠く達していないことを予めお断りしておく.
今世紀半ばをすぎて, 西欧近代科学のいろいろな分野で, 東洋思想の影響が見られるようになった. たとえば, ニューサイエンスがある (『現代思想』Vol.12- 1, 1884 年, 「ニューサイエンス」特集を参照). Tao という言葉が出てくるものとして, 英国の物理学者 Fritjof Capra が 1975 に出版した『タオ自然学 (Tao of Physics)』という有名な著作がある. これは, 量子力学と相対論によってデカルト的な思想から外れつつあった西欧的自然科学が, 実は古来の東洋思想と驚くべきほど共通点があると指摘したものである. たとえば, すべての物質を構成する素粒子とミクロの世 界を支配する「絶えず変化する流動性 (ever-changing fluidity)」と「相互依存 (interdependency)」が東洋思想の「無常」や「相依相関」と共通しているという. さらに, 素粒子は他のすべての素粒子の影響を受け, そしてその素粒子自身も他のすべての素粒子に「浸透」としているとする「相互浸透 (interpenetration)」 は仏教の「一念三千」と同じともいう. こうして, 個々の単位よりも, それらの間の関わりが世界の有り様 であるとする. これは, まさに非還元主義的な全体論である. ただし, ニューサイエンスの思潮には老子だけでな く, 仏教を含めた東洋神秘思想全体が影響している ことに注意しておく必要がある. Tao (道) は way に 通じ, 最も引用のしやすい言葉であったと思われる. プログラミングの分野で, 我々に目についたもの を以下に挙げる.
[1] Algol 68 report (1968?, 多分もっと後)
これについては, 1 章ですでに述べた. ニューサイエンスとの関わりはないはずである.
[2]
Tao を偶然に発見 (1977 年ごろ) 我々の記号処理言語の名前の発見のことである. まさに無為自然だったのかもしれない.
[3] Geoffrey James: The Tao of Programming, In- foBooks, 1986
[4] Geoffrey James: The ZEN of Programming, In- foBooks, 1988
この 2 冊の小さな本 (岩波新書サイズのペーパーバッ クで, どちらも 120 ページ前後) は, 我々が 2 作目の TAO/ELISをほぼ完成させたころにちょうど出た. 著 者の Geoffrey James は, ある会社のソフトウェアの 保守部門で長く仕事をしてきた人らしい. 基本的には Taoism を足掛かりにして, ソフトウェアプロジェ クトの有り様についての短い警句を集めたものであ る. いわゆるパロディ作品で, 全体がひとまとまりでジョークになっている. たとえば, (明らかに架空の) 古文書をでっちあげ, それを解読した結果, このような神秘の警句集が得られた, とか. 実際, [3] にはそ の古文書の文章 (中国語のつもり?) とされるものがすべての左ページに掲載されているが, 日本人が見ても無意味とわかる文字列である.
著者が, ソフトウェア保守の現場で仕事をしてきた人であるだけに, 警句の題材は, 主にソフトウェア プロジェクトの中から拾っている. 二つの警句をピックアップしておく.
[1.3] In the beginning was the Tao. The Tao gave the birth to Space and Time. Therefore Space and Time are the Yin and Yang of Programming. Programmers that do not comprehend Tao are always running out of time and space for their programs. Programmers that comprehend Tao always have enough time and space to accomplish their goals.
How could it be otherwise?
[3.4] A manager went to the master programmer and showed him the requirements document for a new application. The manager asked the master: “How long will it take to design this system if I assign five programmers to it?”
“It will take one year,” said the master promptly.
“But we need this system immediately or even sooner! How long will it take if I assign ten pro- grammers to it?”
The master frowned. “In that case, it will take two years.”
“And what if I assign a hundred programmers to it?”
The master programmer shrugged. “Then the design will never be completed,” he said.
ZEN と題した [4] のほうは, [3] が好評だったゆえの 第 2 作であり, こちらは日本語が飾りとしてあしらわれている. 老子というより, 禅問答的なものが多い が, 短いものを一つ引用しよう.
[4.8] A novice asked the master: “Is there Buddha- nature in an ADA compiler?”
The master replied: “Have you ever noticed that the NUL character is 000 in both octal, hex, and decimal?”
Suddenly the novice was enlightened.
次の本は, ジョークではなくて真面目なオブジェクト指向プログラミングの入門書である.
[5] Gary Entsminger: The Tao of Objects, M&T Publishing, 1991
前書きには, 東洋の古典思想を援用してオブジェクト指向プログラミングの入門を書けたら本望と書か れているが, Tao 自身についてはあまり多く語られていない. 前書きにはこうある. Tao では目的 (destination) よりもそこに至る道 (path) を重んずる. プ ログラミングでも目的に短絡した発想をすると, 応用や修正の効かない一発かぎりのプログラムができてしまう. オブジェクト指向の発想であれば, 設計が自然に再利用性の高いプログラムを生み出すような道に沿う. 本文中では第 1 章の冒頭に次のような言及がある.
Ancient Chinese philosophers believed in a uni- fying reality called the Tao. These philosophers of the Tao, or Way, emphasized that the world is not a static entity, but a dynamic process. The objects that compose the world are reflections of that process — in flux and ever-changing. Thus, the ability to model or capture an object’s essence is illusory; we really only capture a bit of it for a short while.
A computer program is a process, a tool, a way to model, capture, or simulate part of the world. In traditional programming, static con- cepts impose themselves on a dynamic world. It becomes difficult to model the world or mod- ify the model. Object-oriented programming is a major step toward making programming and the programs themselves dynamic. Using object- oriented programming techniques, your can de- sign programs that are better suited for modeling a dynamic world, create and destroy complex pro- cesses at both compile time and run time, and design programs as if they evolved (which they do).
これは動的プログラミングの必要性をオブジェクト指向という枠組で的確に表現していると言えよう. 実際, 第 5 章は “Dynamic Styles” と題されており, 全体としてオブジェクト指向の動的な側面が強調されるようなプログラミング例に重点がおかれている. 次のホームページは, WWW を Tao で検索して見つかったものである. 比較的真面目な哲学・芸術・宗教関係のページであるが, そのなかに, プログラミングに関係したリンクも収録されている. 今年になってできた, まだ新しいページのようである.
[6] www.edepot.com/taoism.html
プログラミングに関係するのは, Enjoy Dao related humor のリンクである. 『道徳経』のパロディと禅問答からなる. 前者は原典によく即しており, 佳作が多い. 著者に関しては sorensen@ecse.rpi.eduという情報しかない. 一部だけを引用しよう. 暇なとき に覗いてみられることをお奨めする. Tao Te Chip (表題自身が Tao Te Ching『道徳 経』のパロディ)
01 (この数字は『道徳経』の第 1 章に対応する)
The tao that can be tar(1)ed is not the entire Tao.
The path that can be specified is not the Full Path.
We declare the names of all variables and functions.
Yet the Tao has no type specifier. Dynamically binding, you realize the magic.
Statically binding, you see only the hierarchy. Yet magic and hierarchy arise from the same source,
and this source has a null pointer.
Reference the NULL within NULL,
it is the gateway to all wizardry.
12 (もちろん第 12 章)
Graphics blind the eyes.
Audio files deafen the ear.
Mouse clicks numb the fingers. Heuristics weaken the mind. Options wither the heart.
The Guru observes the net
but trusts his inner vision.
He allows things to come and go. His heart is as open as the ether.
5 むすびに代えて
前節までとりとめなくいろいろなものを引用して きた. これだけからプログラミングと Taoism の関係 についてなにか結論めいたものを引き出すことは無 理である. しかし, いろいろな文脈でプログラミング の世界に Taoism に関心をもっている人々がいること は事実である. やや早まっているが, 多少強引に, そ の背景や意味について考察しよう.
Entsminger のオブジェクト指向の教科書, Sorensen や James のパロディにも現れているが, 万物が流転 する, 世界は動的である, それゆえに捉えにくく, 形 を決めにくいという Tao の思想は, 動的言語の精神 的支柱となり得るものである. すなわち, 対象世界を モデル化するときに, すべてを静的に割り切って捉 えてしまうことは困難である. そのような流転や捉 えにくさを反映したモデル化が必要なのである. オ ブジェクト指向にも静的な捉えかたを強調する向き があるが, 本来のオブジェクト指向はもっと自由で動 的であったほうが強力であろう. 我々のような Lisp 系言語の研究者には嬉しい主張である.
非還元的で全体論的な発想が要求されるマルチエージェントプログラミングや大規模分散プログラミングは, Capra のタオ自然学の発想に対応した東洋思想的なものが要求されてくる. 筆者らが以前「コネクティクス」という名前で発表した複雑系として のプログラミングの構想は, 実はこの延長線上にあっ たものだとも言える (竹内郁雄, 後藤滋樹, 尾内理紀 夫, 斎藤康己, 奥乃 博: コネクティクス構想, 日本ソ フトウェア科学会第 8 回大会論文集, B3-1 (1991)). 人工生命もしかりであるが, なにも為さずして, 創発 現象を導くというのは, まさに Tao の無為自然の発 想であろう.
Algol 68 に『道徳経』の第 42 章が引用されたのは, その文章が暗示するように, 一番深い原理から順に ものが生成してくるという様子が, Algol 68 という 巨大な言語の真の設計理念をうまく表していると考 えた人がいたからであろう.
プログラミングは難しい. しかし, 中にはサラサラ と素晴らしいプログラムを書く人がいる. それにか ぎらず, コンピュータの世界には Guru と呼ばれるよ うな才能をもった人がいる. これは「悟りをひらい た聖人 (sage)」のごとく, 余人の追従を許さないよ うな自然体でプログラミングをしてしまう. このよ うな人々に対する畏敬の念は自然に Taoism の sage を連想させる. これも, Tao がプログラミングの文脈 で引用される一因であろう. このようなことがある
のであれば, 自然体のプログラミングとはなにかに ついての議論が, これまた自然に興る. 当然のことな がら, なかなか言説として顕在化しないが....
自然体ということから, Taoism は CHI (Computer Human Interaction) 設計の指針・哲学ともなり得る. 「上善は水の若し」とあるように水のように相手や 環境に合ってしまう柔軟な道具とかコンピュータは CHI の究極の目標の一つであろう. ただし, 我々の知 るかぎりでは, Tao と CHI の関係が明言された例は
ないようである (あったら, ご教示願いたい). それにしても, Tao がこういうふうに引用されるの は, 老子の難解さと曖昧さが多種多様の解釈を呼ぶ 余地をもたらしているからだという気もする. 捉え どころのなさのゆえに, とりあえず拠り所にしやす いのである. 聖人とプログラミングにおける Guru と をダブラせることが容易なのは, そのあたりから来 ているのかもしれない. Entsminger の “The Tao of Objects” のように, Tao と Way が意味的にダブらさ れていることも, Tao が出てくるのに寄与している
と思われる.
また, Tao に内在する本質的なユーモアも大いに作用している. パロディにしたくなるような難解さと 曖昧さとでもいうのだろうか. 我々の開発した TAO も結局ここに行き着くように思う. そういえば, Hoff の “The Tao of Pooh” は Penguin book の Humor の 分類に入っている. Smullyan の “The Tao is Silent” の訳書のタイトルは『タオは笑っている』である. も ちろん, この笑いは静かな微笑みである. 世の中を, 赤ん坊のように悩まず, 微笑んで受け止める. これ自 体が立派な自然体であり, ユーモアである.
Capra は, 科学も芸術のような領域であると言った らしいが, プログラミングも芸術のような領域とす れば, そこでユーモアが重要になってくることは間 違いない. すなわち, 実はプログラミングにいつも ユーモアがあることこそが, プログラミングを楽し み, よいプログラムを生み出すための秘訣かもしれ ない. その点で日本のプログラミング界の状況は米 国にくらべて劣っていると思うのは, 単に「隣の芝 はよく見える」現象なのだろうか? 残念ながら我々 にはそう思えない.
日本のプログラミングには, (Taoism でなくてもい いが) もっとユーモアが欲しいと提言して, 本稿を締 めくくりたい.
[文献] 本文中に埋め込んだ.